package Year2020;
import java.util.Scanner;
public class 答疑 {

    static int n = 4;
    static int[][] array= {{10000,10000,10000,30000},{20000, 50000 ,20000,90000},{30000 ,30000 ,20000,80000},{30000 ,20000 ,30000,80000}};

    public static void main(String[] args) {
        System.out.println(1);
//        Scanner scan = new Scanner(System.in);
//        int n;
//        n = scan.nextInt();
//        int[][] array = new int[n][3];
//        for (int i = 0; i < n; i++) {
//            for (int j = 0; j < 3; j++) {
//                array[i][j] = scan.nextInt();
//            }
//        }
        int[][] Temp = new int[n][4];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < 3; j++) {
                Temp[i][j] = array[i][j];
                Temp[i][3] += array[i][j];
            }
        }
        quickSort(Temp,0,n-1,4,3);
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < 4; j++) {
                System.out.print(Temp[i][j]+"\t");
            }
            System.out.println();
        }

        int len = 0; // 相同的个数，自身为1
        for (int i = 0; i < n;) {
            while(Temp[i][3] == Temp[i+len][3] && i+len <n){
                len++;
            }
            if(len == 1){
                i = i + len;
            }
            if(len > 1 && i+len < n){
                quickSort(Temp,i,i+len-1,4,2);
                i += len;
                System.out.println("len:"+len);
            }else {
                quickSort(Temp,i,n-1,4,2);
                return;
            }
            len = 0;
        }
//        quickSort(Temp,1,2,4,2);
        System.out.println();
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < 4; j++) {
                System.out.print(Temp[i][j]+"\t");
            }
            System.out.println();
        }

//        scan.close();
    }
    public static int[][] quickSort(int[][] array,int start, int end, int n,int clo){ // temp数组长度，clo依据列
        int pivot = array[start][clo];
        int i = start;
        int j = end;
        while (i<j) {
            while (i<j && array[j][clo] > pivot)
                j--;
            while (i<j && array[i][clo] < pivot)
                i++;
            if (i<j && array[i][clo]==array[j][clo]) {
                i++;
            } else {
                int[] temp = new int[n];
                for (int k = 0; k < n; k++) {
                    temp[k] = array[i][k];
                    array[i][k] = array[j][k];
                    array[j][k] = temp[k];
                }
            }
        }
        if (i-1 > start)
            array=quickSort(array,start,i-1,n,clo);
        if (j+1 < end)
            array=quickSort(array,j+1,end,n,clo);
        return array;
    }
}
/**
 题目描述
 有 nn 位同学同时找老师答疑。每位同学都预先估计了自己答疑的时间。

 老师可以安排答疑的顺序，同学们要依次进入老师办公室答疑。 一位同学答疑的过程如下：

 首先进入办公室，编号为 i 的同学需要 si毫秒的时间。
 然后同学问问题老师解答，编号为 i 的同学需要 ai毫秒的时间。
 答疑完成后，同学很高兴，会在课程群里面发一条消息，需要的时间可 以忽略。
 最后同学收拾东西离开办公室，需要 ei毫秒的时间。一般需要 1010 秒、2020 秒或 3030 秒，即 ei取值为 1000010000，2000020000 或 3000030000。
 一位同学离开办公室后，紧接着下一位同学就可以进入办公室了。

 答疑从 0 时刻开始。老师想合理的安排答疑的顺序，使得同学们在课程群 里面发消息的时刻之和最小。

 输入描述
 输入第一行包含一个整数 n，表示同学的数量。

 接下来 n 行，描述每位同学的时间。其中第 i 行包含三个整数 si, ai, ei 意义如上所述。

 其中有 ，1 ≤ n ≤ 1000，1 ≤ si ≤ 60000，1 ≤ ai ≤ 10^6， ei ∈ {10000, 20000, 30000} 1≤n≤1000，即 ei 一定是 10000、20000、3000010000、20000、30000 之一。

 输出描述
 输出一个整数，表示同学们在课程群里面发消息的时刻之和最小是多少。

 输入输出样例
 示例
 输入
 3
 10000 10000 10000
 20000 50000 20000
 30000 20000 30000

 输出
 280000

 运行限制
 最大运行时间：3s
 最大运行内存: 128M
 */
